package com.ruoyi.common.core.domain.entity.system;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 船只信息对象 sys_boat
 *
 * @author zjw
 * @date 2023-06-21
 */
public class SysBoat extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 船只id
     */
    private Long boatId;

    /**
     * 船只身份识别码(出厂id)
     */
    private String boatIdentityId;

    /**
     * 船名
     */
    @Excel(name = "船名")
    private String boatName;

    /**
     * 船编号
     */
    @Excel(name = "船编号")
    private String boatCode;

    /**
     * 船只图片。
     */
    private String boatPic;

    /**
     * 所属的景区id
     */
    @Excel(name = "所属的景区id")
    private Long scenicId;

    /**
     * 所属景区名称。
     */
    private String scenicShortName;

    /**
     * 所属的码头id
     */
    @Excel(name = "所属的码头id")
    private Long wharfId;
    /**
     * 分配的电子围栏id。
     */
    private Long fenceId;

    /**
     * 报警级别。0：正常(即无报警)，1：警告，2：紧急。
     */
    private Integer alarmLevel;

    /**
     * 所属码头名称。
     */
    private String wharfName;

    /**
     * 出厂日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出厂日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date prodDate;

    /**
     * 电机编号1
     */
    @Excel(name = "电机编号1")
    private String motorCode1;

    /**
     * 电机编号2
     */
    @Excel(name = "电机编号2")
    private String motorCode2;

    /**
     * 电池编号
     */
    @Excel(name = "电池编号")
    private String batteryCoe;

    /**
     * 累计时长
     */
    @Excel(name = "累计时长")
    private Long accumulatedTime;

    /**
     * 累计航程
     */
    @Excel(name = "累计航程")
    private Long accumulatedDistance;

    /**
     * 累计耗电
     */
    @Excel(name = "累计耗电")
    private String accumulatedPowerConsumption;

    /**
     * 累计收入
     */
    @Excel(name = "累计收入")
    private String accumulatedIncome;

    /**
     * 船只状态（0=离线,1=维护,2=空闲,3=拼团中,4=上船倒计时中,5=开锁等待中,6=手动驾驶中,7=自动驾驶中。）
     */
    @Excel(name = "船只状态", readConverterExp = "0=离线,1=维护,2=空闲,3=拼团中,4=上船倒计时中,5=开锁等待中,6=手动驾驶中,7=自动驾驶中。")
    private Integer status;

    /**
     * 船只状态文字描述（0=离线,1=维护,2=空闲,3=上船倒计时中,4=拼团中,5=手动驾驶中,6=自动驾驶中）
     */
    private String statusDesc;

    /**
     * 船只当前位置坐标经度。
     */
    private Double lastLongitude;
    /**
     * 船只当前位置坐标纬度。
     */
    private Double lastLatitude;

    /**
     * 船只朝向。取值范围：0~36000，分辨率0.01°
     */
    private Integer lastOrientation;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private String delFlag;

    /**
     * 船端录像机编码(萤石云录像机专用)
     */
    private String recorderCode;

    /**
     * 自动航线列表。
     */
    private List<SysShipline> shiplines;

    /**
     * 自动航线ID数组。
     */
    private Long[] shiplineIds;

    private SysFence fence;

    public Integer getAlarmLevel() {
        return alarmLevel;
    }

    public void setAlarmLevel(Integer alarmLevel) {
        this.alarmLevel = alarmLevel;
    }

    public SysFence getFence() {
        return fence;
    }

    public void setFence(SysFence fence) {
        this.fence = fence;
    }

    public Long getFenceId() {
        return fenceId;
    }

    public void setFenceId(Long fenceId) {
        this.fenceId = fenceId;
    }

    public Long[] getShiplineIds() {
        return shiplineIds;
    }

    public void setShiplineIds(Long[] shiplineIds) {
        this.shiplineIds = shiplineIds;
    }

    public List<SysShipline> getShiplines() {
        return shiplines;
    }

    public void setShiplines(List<SysShipline> shiplines) {
        this.shiplines = shiplines;
    }

    public String getBoatPic() {
        return boatPic;
    }

    public void setBoatPic(String boatPic) {
        this.boatPic = boatPic;
    }

    public Integer getLastOrientation() {
        return lastOrientation;
    }

    public void setLastOrientation(Integer lastOrientation) {
        this.lastOrientation = lastOrientation;
    }

    public Double getLastLongitude() {
        return lastLongitude;
    }

    public void setLastLongitude(Double lastLongitude) {
        this.lastLongitude = lastLongitude;
    }

    public Double getLastLatitude() {
        return lastLatitude;
    }

    public void setLastLatitude(Double lastLatitude) {
        this.lastLatitude = lastLatitude;
    }

    public String getStatusDesc() {
        return statusDesc;
    }

    public void setStatusDesc(String statusDesc) {
        this.statusDesc = statusDesc;
    }

    public String getRecorderCode() {
        return recorderCode;
    }

    public void setRecorderCode(String recorderCode) {
        this.recorderCode = recorderCode;
    }

    public void setBoatId(Long boatId) {
        this.boatId = boatId;
    }

    public Long getBoatId() {
        return boatId;
    }

    public void setBoatName(String boatName) {
        this.boatName = boatName;
    }

    public String getBoatName() {
        return boatName;
    }

    public void setBoatCode(String boatCode) {
        this.boatCode = boatCode;
    }

    public String getBoatCode() {
        return boatCode;
    }

    public void setScenicId(Long scenicId) {
        this.scenicId = scenicId;
    }

    public Long getScenicId() {
        return scenicId;
    }

    public void setWharfId(Long wharfId) {
        this.wharfId = wharfId;
    }

    public Long getWharfId() {
        return wharfId;
    }

    public void setProdDate(Date prodDate) {
        this.prodDate = prodDate;
    }

    public Date getProdDate() {
        return prodDate;
    }

    public String getMotorCode1() {
        return motorCode1;
    }

    public void setMotorCode1(String motorCode1) {
        this.motorCode1 = motorCode1;
    }

    public String getMotorCode2() {
        return motorCode2;
    }

    public void setMotorCode2(String motorCode2) {
        this.motorCode2 = motorCode2;
    }

    public void setBatteryCoe(String batteryCoe) {
        this.batteryCoe = batteryCoe;
    }

    public String getBatteryCoe() {
        return batteryCoe;
    }

    public void setAccumulatedTime(Long accumulatedTime) {
        this.accumulatedTime = accumulatedTime;
    }

    public Long getAccumulatedTime() {
        return accumulatedTime;
    }

    public void setAccumulatedDistance(Long accumulatedDistance) {
        this.accumulatedDistance = accumulatedDistance;
    }

    public Long getAccumulatedDistance() {
        return accumulatedDistance;
    }

    public void setAccumulatedPowerConsumption(String accumulatedPowerConsumption) {
        this.accumulatedPowerConsumption = accumulatedPowerConsumption;
    }

    public String getAccumulatedPowerConsumption() {
        return accumulatedPowerConsumption;
    }

    public void setAccumulatedIncome(String accumulatedIncome) {
        this.accumulatedIncome = accumulatedIncome;
    }

    public String getAccumulatedIncome() {
        return accumulatedIncome;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getStatus() {
        return status;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    public String getBoatIdentityId() {
        return boatIdentityId;
    }

    public void setBoatIdentityId(String boatIdentityId) {
        this.boatIdentityId = boatIdentityId;
    }

    public String getScenicShortName() {
        return scenicShortName;
    }

    public void setScenicShortName(String scenicShortName) {
        this.scenicShortName = scenicShortName;
    }

    public String getWharfName() {
        return wharfName;
    }

    public void setWharfName(String wharfName) {
        this.wharfName = wharfName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("boatId", getBoatId())
                .append("boatName", getBoatName())
                .append("boatCode", getBoatCode())
                .append("scenicId", getScenicId())
                .append("wharfId", getWharfId())
                .append("prodDate", getProdDate())
                .append("motorCode1", getMotorCode1())
                .append("motorCode2", getMotorCode2())
                .append("batteryCoe", getBatteryCoe())
                .append("accumulatedTime", getAccumulatedTime())
                .append("accumulatedDistance", getAccumulatedDistance())
                .append("accumulatedPowerConsumption", getAccumulatedPowerConsumption())
                .append("accumulatedIncome", getAccumulatedIncome())
                .append("status", getStatus())
                .append("statusDesc", getStatusDesc())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
